package com.atguigu.gmall.all.controller;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.client.ProductFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import org.thymeleaf.context.IContext;

import javax.servlet.http.HttpServletRequest;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @author atguigu-mqx
 */
@Controller
public class IndexController {

    @Autowired
    private ProductFeignClient productFeignClient;

    @Autowired
    private TemplateEngine templateEngine;

    //  访问首页控制器！
    @GetMapping({"/","index.html"})
    public String index(HttpServletRequest request){
        Result result = productFeignClient.getBaseCategoryList();
        //  ${list}
        request.setAttribute("list",result.getData());
        //  返回首页模板！
        return "index/index";
    }

    //  先生成首页的静态数据模板！
    @GetMapping("createIndex")
    @ResponseBody
    public Result createIndex(){
        //  获取数据
        Result result = productFeignClient.getBaseCategoryList();
        //  创建模板输出内容数据对象！
        Context context = new Context();
        //  第一个参数页面渲染时的key  第二个参数：key 所对应的数据
        context.setVariable("list",result.getData());
        //  void process(String var1, IContext var2, Writer var3);
        //  声明一个 FileWriter
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter("D:\\index.html");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //  第一个参数 路径， 第二个参数 IContext , 第三个参数 输出流
        templateEngine.process("index/index.html",context,fileWriter);
        //  默认返回ok！
        return Result.ok();
    }

}
